/***
 7-7 小字辈（左子右兄加强版） (30 分)
本题给定一个庞大家族的家谱，要请你给出最小一辈的名单。
需要注意的是，家族成员的输入方式，是按照“Left-child Right-sibling”（左儿子 右兄弟）的格式
【敲黑板】sibling的意思是兄弟/姐妹，是亲兄弟，不是“表兄弟”！2019年春季PAT中不认识单词sibling的孩纸请牢记……
注：本题是在浙江大学陈越老师的GPLT-2018决赛L2-2题目“小字辈”题意基础上改编而成。

输入格式:
输入在第一行给出家族人口总数 N（不超过 100 000 的正整数） —— 简单起见，我们把家族成员从 1 到 N 编号。
随后的N行，每行给出1名家族成员的编号以及他的亲属关系，格式为3个以空格间隔的整数A B C，
其中的A（范围1～N）是1名家族成员编号（每行的编号必定各不相同）
B的范围是0～N，当B不为0，表示A有儿子B；
C的范围是0～N，当C不为0，表示A有兄弟C。
题目保证输入是正确的，即：只有一个家族（没有分离成家族群），且家族中只有一位老祖宗（老祖宗即：他不是任何其他人的儿子）

输出格式:
首先输出最小的辈分（老祖宗的辈分最大、数值为 1，子孙的辈分数值逐级递增1）。
然后在第二行按递增顺序输出辈分最小的成员的编号。编号间以一个空格分隔，行首尾不得有多余空格。

输入样例1:
5
1 2 0
2 4 3
3 0 0
4 0 5
5 0 0
结尾无空行
输出样例1:
3
4 5
结尾无空行
输入样例2:
5
2 5 3
1 2 0
3 0 0
4 0 0
5 0 4
结尾无空行
输出样例2:
3
4 5
结尾无空行
***/

#include "stdio.h"
#include "stdlib.h"
#define N 100001
struct tree
{
    int f, l, r;
} nodes[N];
int level[N] = {-1}, count = 0;
int max = -1;
void getMax(int node, int height)
{
    if (height > max)
    {
        max = height;
        count = 1;
    }
    else if (max == height)
        count++;
    level[node] = height;
    //继续查找子节点和兄弟结点
    if (nodes[node].l)
        getMax(nodes[node].l, height + 1);
    if (nodes[node].r)
        getMax(nodes[node].r, height);
}
int main(int argc, char const *argv[])
{
    int n, i, f, l, r, root,c;
    // freopen("a.txt", "r", stdin);
    for (i = 0; i < N; i++)
    {
        nodes[i].f = -1;
        nodes[i].l = nodes[i].r = 0;
    }
    scanf("%d", &n);
    for (i = 1; i <= n; i++)
    {
        scanf("%d %d %d", &f, &l, &r);
        if (l)
        {
            nodes[f].l = l;
            nodes[l].f = f;
        }
        if (r)
        {
            nodes[f].r = r;
            nodes[r].f = f; // f只用于查找根，不用于查找层数，所以找到兄弟结点也可以
        }
    }
    //查找根节点
    root = 1;
    while (nodes[root].f != -1)
        root = nodes[root].f;
    //从根节点找到最小一层，并且把最小一层压栈
    getMax(root, 1);
    printf("%d\n", max);
    c=0;i=1;
    while(c<count){
        if(level[i]==max){
            c++;
            if(c<count)printf("%d ",i);
            else printf("%d\n",i);
        }
        i++;
    }

    return 0;
}
